
#ifndef _TTG_STRUCTURES_SERIALIZABLE_OBJECT_
#define _TTG_STRUCTURES_SERIALIZABLE_OBJECT_
#include "Common/Definitions.h"

//Defenition of used class.
namespace ttg
{
	namespace extras
	{
		namespace serialization
		{
			class Serializer;
			class DeSerializer;
		}
	}
}

namespace ttg
{
	namespace structures
	{
		//Represents object, that can be serialized (using extras::serialization::Serializer).
		class SerializableObject
		{
			public:
				//Serializes current object (into given serializer).
				virtual void serialize(ttg::extras::serialization::Serializer &serializer) = 0;
				//Reconfigures current object according to serialized representation.
				virtual void deserialize(ttg::extras::serialization::DeSerializer &deserializer) = 0;
		};
	}
}

#endif
